import request from '../../utils/request'


Page({
  // 获取video页面的导航项
  async getVideoNavList() {
    const result = await request({
      url: '/video/group/list'
    })
    if (result.code === 200) {
      this.setData({
        navList: result.data.slice(0, 20),
        navId: result.data[0].id
      })
    }
  },
  // 实现动态切换nav项 下划线
  changeNavId(event) {
    this.setData({
      navId: event.currentTarget.dataset.id
    })
    //获取对应的视频列表
    this.getVideoListData()
  },
  //根据导航项id 获取视频列表内容
  async getVideoListData(){
    const {navId:id} = this.data
    const result = await request({url:'/video/group',data:{id}})
    if(result.code===200){
      const videoList = result.datas.map(item=>item.data)
      this.setData({
        videoList,
        isTriggered: false //关闭下拉刷新
      })
    }
  },
  //设置视频播放或暂停
  handlerPlayOrPause(event){
    //1.获取当前播放的视频id
    const videoId = event.currentTarget.id
    //2.储存以上id，后续用上
    this.setData({
      videoId
    })
    //3.判断是否第一次单击
    //如果没有上下文对象，则是第一次
    if(!this.player){
      //第一次单击的话就要创建上下文对象
      this.player = wx.createVideoContext(this.data.videoId)
      //调用play方法
      this.player.play()
       //4.保存当前播放状态，是在播放还是暂停
     this.playStatus = true
     //5.保存当前视频id，后面要判断是不是同一个视频
     this.vid = this.data.videoId
    
    }else{
      //6.判断是不是同一个视频
      if(this.vid===this.data.videoId){
        //如果是同一个视频，那判断播放状态
        if(this.playStatus){
          //播放的话就暂停
          this.player.pause()
          //更新状态
          this.playStatus = false
        }else{
          //暂停就播放
          this.player.play()
          //更新状态
          this.playStatus = true
        }
      }else{
          //7.单击的不是同一个视频，是新的视频
          //先暂停掉之前播放的
          this.player.pause() 
          // 创建新的播放上下文对象
        this.player = wx.createVideoContext(this.data.videoId)
           //查找之前有没有播放过
        const currentVideo = this.data.recordList.find(item => item.vid === this.data.videoId)
        // 如果有播放过，要跳转到之前播放的位置 然后继续向后播放
        currentVideo && this.player.seek(currentVideo.currentTime)
        // 让当前这个播放
        this.player.play()
        // 记录播放状态 
        this.playStatus = true 
        //记录一下当前的视频id
        this.vid = this.data.videoId
      }
    }

  },
  //获取视频播放记录
  handlerTimeUpdate(event){
    //获取一下播放信息
    const recordList = this.data.recordList
    //遍历数组，查找有没有当前被单击的视频
    let currentVideo = recordList.find(item=>item.vid===this.data.videoId)
    //如果有播放记录，更新播放时长
    if(currentVideo){
      currentVideo.currentTime = event.detail.currentTime
    }else{
      //没有播放过，就记录添加到recordList
      currentVideo={
        currentTime: event.detail.currentTime,
        vid:this.data.videoId
      }
      recordList.push(currentVideo)
    }
    //更新播放信息列表
    this.setData({
      recordList
    })
  },

  //视频播放完成后
  handlerVideoEnd(){
    // 查找一下播放完的视频索引
    const recordList = this.data.recordList
    const index = recordList.findIndex(item=>item.vid === this.data.videoId)

    // 判断一下是否存在 存在就删除
    index != -1 && recordList.splice(index,1)
    //再更新回原来的data当中
    this.setData({
      recordList
    })
  },
   //下拉刷新 获取数据
   handlerRefresh(){
    console.log('下拉刷新了...')
    this.setData({
      isTriggered:true
    })
    // 重新获取一下视频列表数据
    this.getVideoListData()
  },
  //上拉加载数据
  handlerLower(){
    // 由于重新加载也没有新的内容 ，此时我们模块新内容的加载，再次加8个
    let {videoList} = this.data
    const newVideoList = videoList.slice(0, 8)
    videoList = [...videoList, ...newVideoList]
    if (videoList.length > 40) return
    // 再更新回去
    this.setData({
      videoList
    })
  },

  /**
   * 页面的初始数据
   */
  data: {
     navList:[] ,//视频导航数据
     navId:'',   //导航nav id
     videoList:[], //视频内容列表
     videoId:'',  //播放视频id
     recordList:[], //被单击视频的播放信息
     isTriggered: false, //是否开启下拉刷新
  },
 

  /**
   * 生命周期函数--监听页面加载
   */
  async onLoad(options) {
    //视频nav导航数据
   await this.getVideoNavList()
   //视频列表数据
   await this.getVideoListData()
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage({from}) {
    if(from === 'button'){
      return{
        title:'这是视频列表',
        path:'/pages/video/video',
        imageUrl:'/static/images/recommendSong/02.jpg'
      }
    }
  }
})